/*
 * Copyright (c) 2012-2013, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
/*
 * Copyright 2001-2004 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
 * $Id: ErrorMessages.java,v 1.2.4.1 2005/09/15 09:59:41 pvedula Exp $
 */

package com.sun.org.apache.xalan.internal.xsltc.compiler.util;

import java.util.ListResourceBundle;

/**
 * @author Morten Jorgensen
 */
public class ErrorMessages extends ListResourceBundle {

    /*
     * XSLTC compile-time error messages.
     *
     * General notes to translators and definitions:
     *
     *   1) XSLTC is the name of the product.  It is an acronym for "XSLT Compiler".
     *      XSLT is an acronym for "XML Stylesheet Language: Transformations".
     *
     *   2) A stylesheet is a description of how to transform an input XML document
     *      into a resultant XML document (or HTML document or text).  The
     *      stylesheet itself is described in the form of an XML document.
     *
     *   3) A template is a component of a stylesheet that is used to match a
     *      particular portion of an input document and specifies the form of the
     *      corresponding portion of the output document.
     *
     *   4) An axis is a particular "dimension" in a tree representation of an XML
     *      document; the nodes in the tree are divided along different axes.
     *      Traversing the "child" axis, for instance, means that the program
     *      would visit each child of a particular node; traversing the "descendant"
     *      axis means that the program would visit the child nodes of a particular
     *      node, their children, and so on until the leaf nodes of the tree are
     *      reached.
     *
     *   5) An iterator is an object that traverses nodes in a tree along a
     *      particular axis, one at a time.
     *
     *   6) An element is a mark-up tag in an XML document; an attribute is a
     *      modifier on the tag.  For example, in <elem attr='val' attr2='val2'>
     *      "elem" is an element name, "attr" and "attr2" are attribute names with
     *      the values "val" and "val2", respectively.
     *
     *   7) A namespace declaration is a special attribute that is used to associate
     *      a prefix with a URI (the namespace).  The meanings of element names and
     *      attribute names that use that prefix are defined with respect to that
     *      namespace.
     *
     *   8) DOM is an acronym for Document Object Model.  It is a tree
     *      representation of an XML document.
     *
     *      SAX is an acronym for the Simple API for XML processing.  It is an API
     *      used inform an XML processor (in this case XSLTC) of the structure and
     *      content of an XML document.
     *
     *      Input to the stylesheet processor can come from an XML parser in the
     *      form of a DOM tree or through the SAX API.
     *
     *   9) DTD is a document type declaration.  It is a way of specifying the
     *      grammar for an XML file, the names and types of elements, attributes,
     *      etc.
     *
     *  10) XPath is a specification that describes a notation for identifying
     *      nodes in a tree-structured representation of an XML document.  An
     *      instance of that notation is referred to as an XPath expression.
     *
     *  11) Translet is an invented term that refers to the class file that contains
     *      the compiled form of a stylesheet.
     */

    // These message should be read from a locale-specific resource bundle
    /** Get the lookup table for error messages.
     *
     * @return The message lookup table.
     */
    public Object[][] getContents() {
        return new Object[][] { { ErrorMsg.MULTIPLE_STYLESHEET_ERR, "More than one stylesheet defined in the same file." },

                /*
                 * Note to translators:  The substitution text is the name of a
                 * template.  The same name was used on two different templates in the
                 * same stylesheet.
                 */
                { ErrorMsg.TEMPLATE_REDEF_ERR, "Template ''{0}'' already defined in this stylesheet." },

                /*
                 * Note to translators:  The substitution text is the name of a
                 * template.  A reference to the template name was encountered, but the
                 * template is undefined.
                 */
                { ErrorMsg.TEMPLATE_UNDEF_ERR, "Template ''{0}'' not defined in this stylesheet." },

                /*
                 * Note to translators:  The substitution text is the name of a variable
                 * that was defined more than once.
                 */
                { ErrorMsg.VARIABLE_REDEF_ERR, "Variable ''{0}'' is multiply defined in the same scope." },

                /*
                 * Note to translators:  The substitution text is the name of a variable
                 * or parameter.  A reference to the variable or parameter was found,
                 * but it was never defined.
                 */
                { ErrorMsg.VARIABLE_UNDEF_ERR, "Variable or parameter ''{0}'' is undefined." },

                /*
                 * Note to translators:  The word "class" here refers to a Java class.
                 * Processing the stylesheet required a class to be loaded, but it could
                 * not be found.  The substitution text is the name of the class.
                 */
                { ErrorMsg.CLASS_NOT_FOUND_ERR, "Cannot find class ''{0}''." },

                /*
                 * Note to translators:  The word "method" here refers to a Java method.
                 * Processing the stylesheet required a reference to the method named by
                 * the substitution text, but it could not be found.  "public" is the
                 * Java keyword.
                 */
                { ErrorMsg.METHOD_NOT_FOUND_ERR, "Cannot find external method ''{0}'' (must be public)." },

                /*
                 * Note to translators:  The word "method" here refers to a Java method.
                 * Processing the stylesheet required a reference to the method named by
                 * the substitution text, but no method with the required types of
                 * arguments or return type could be found.
                 */
                { ErrorMsg.ARGUMENT_CONVERSION_ERR, "Cannot convert argument/return type in call to method ''{0}''" },

                /*
                 * Note to translators:  The file or URI named in the substitution text
                 * is missing.
                 */
                { ErrorMsg.FILE_NOT_FOUND_ERR, "File or URI ''{0}'' not found." },

                /*
                 * Note to translators:  This message is displayed when the URI
                 * mentioned in the substitution text is not well-formed syntactically.
                 */
                { ErrorMsg.INVALID_URI_ERR, "Invalid URI ''{0}''." },

                /*
                 * Note to translators:  The file or URI named in the substitution text
                 * exists but could not be opened.
                 */
                { ErrorMsg.FILE_ACCESS_ERR, "Cannot open file or URI ''{0}''." },

                /*
                 * Note to translators: <xsl:stylesheet> and <xsl:transform> are
                 * keywords that should not be translated.
                 */
                { ErrorMsg.MISSING_ROOT_ERR, "<xsl:stylesheet> or <xsl:transform> element expected." },

                /*
                 * Note to translators:  The stylesheet contained a reference to a
                 * namespace prefix that was undefined.  The value of the substitution
                 * text is the name of the prefix.
                 */
                { ErrorMsg.NAMESPACE_UNDEF_ERR, "Namespace prefix ''{0}'' is undeclared." },

                /*
                 * Note to translators:  The Java function named in the stylesheet could
                 * not be found.
                 */
                { ErrorMsg.FUNCTION_RESOLVE_ERR, "Unable to resolve call to function ''{0}''." },

                /*
                 * Note to translators:  The substitution text is the name of a
                 * function.  A literal string here means a constant string value.
                 */
                { ErrorMsg.NEED_LITERAL_ERR, "Argument to ''{0}'' must be a literal string." },

                /*
                 * Note to translators:  This message indicates there was a syntactic
                 * error in the form of an XPath expression.  The substitution text is
                 * the expression.
                 */
                { ErrorMsg.XPATH_PARSER_ERR, "Error parsing XPath expression ''{0}''." },

                /*
                 * Note to translators:  An element in the stylesheet requires a
                 * particular attribute named by the substitution text, but that
                 * attribute was not specified in the stylesheet.
                 */
                { ErrorMsg.REQUIRED_ATTR_ERR, "Required attribute ''{0}'' is missing." },

                /*
                 * Note to translators:  This message indicates that a character not
                 * permitted in an XPath expression was encountered.  The substitution
                 * text is the offending character.
                 */
                { ErrorMsg.ILLEGAL_CHAR_ERR, "Illegal character ''{0}'' in XPath expression." },

                /*
                 * Note to translators:  A processing instruction is a mark-up item in
                 * an XML document that request some behaviour of an XML processor.  The
                 * form of the name of was invalid in this case, and the substitution
                 * text is the name.
                 */
                { ErrorMsg.ILLEGAL_PI_ERR, "Illegal name ''{0}'' for processing instruction." },

                /*
                 * Note to translators:  This message is reported if the stylesheet
                 * being processed attempted to construct an XML document with an
                 * attribute in a place other than on an element.  The substitution text
                 * specifies the name of the attribute.
                 */
                { ErrorMsg.STRAY_ATTRIBUTE_ERR, "Attribute ''{0}'' outside of element." },

                /*
                 * Note to translators:  An attribute that wasn't recognized was
                 * specified on an element in the stylesheet.  The attribute is named
                 * by the substitution
                 * text.
                 */
                { ErrorMsg.ILLEGAL_ATTRIBUTE_ERR, "Illegal attribute ''{0}''." },

                /*
                 * Note to translators:  "import" and "include" are keywords that should
                 * not be translated.  This messages indicates that the stylesheet
                 * named in the substitution text imported or included itself either
                 * directly or indirectly.
                 */
                { ErrorMsg.CIRCULAR_INCLUDE_ERR, "Circular import/include. Stylesheet ''{0}'' already loaded." },

                /*
                 * Note to translators:  A result-tree fragment is a portion of a
                 * resulting XML document represented as a tree.  "<xsl:sort>" is a
                 * keyword and should not be translated.
                 */
                { ErrorMsg.RESULT_TREE_SORT_ERR, "Result-tree fragments cannot be sorted (<xsl:sort> elements are " + "ignored). You must sort the nodes when creating the result tree." },

                /*
                 * Note to translators:  A name can be given to a particular style to be
                 * used to format decimal values.  The substitution text gives the name
                 * of such a style for which more than one declaration was encountered.
                 */
                { ErrorMsg.SYMBOLS_REDEF_ERR, "Decimal formatting ''{0}'' is already defined." },

                /*
                 * Note to translators:  The stylesheet version named in the
                 * substitution text is not supported.
                 */
                { ErrorMsg.XSL_VERSION_ERR, "XSL version ''{0}'' is not supported by XSLTC." },

                /*
                 * Note to translators:  The definitions of one or more variables or
                 * parameters depend on one another.
                 */
                { ErrorMsg.CIRCULAR_VARIABLE_ERR, "Circular variable/parameter reference in ''{0}''." },

                /*
                 * Note to translators:  The operator in an expresion with two operands was
                 * not recognized.
                 */
                { ErrorMsg.ILLEGAL_BINARY_OP_ERR, "Unknown operator for binary expression." },

                /*
                 * Note to translators:  This message is produced if a reference to a
                 * function has too many or too few arguments.
                 */
                { ErrorMsg.ILLEGAL_ARG_ERR, "Illegal argument(s) for function call." },

                /*
                 * Note to translators:  "document()" is the name of function and must
                 * not be translated.  A node-set is a set of the nodes in the tree
                 * representation of an XML document.
                 */
                { ErrorMsg.DOCUMENT_ARG_ERR, "Second argument to document() function must be a node-set." },

                /*
                 * Note to translators:  "<xsl:when>" and "<xsl:choose>" are keywords
                 * and should not be translated.  This message describes a syntax error
                 * in the stylesheet.
                 */
                { ErrorMsg.MISSING_WHEN_ERR, "At least one <xsl:when> element required in <xsl:choose>." },

                /*
                 * Note to translators:  "<xsl:otherwise>" and "<xsl:choose>" are
                 * keywords and should not be translated.  This message describes a
                 * syntax error in the stylesheet.
                 */
                { ErrorMsg.MULTIPLE_OTHERWISE_ERR, "Only one <xsl:otherwise> element allowed in <xsl:choose>." },

                /*
                 * Note to translators:  "<xsl:otherwise>" and "<xsl:choose>" are
                 * keywords and should not be translated.  This message describes a
                 * syntax error in the stylesheet.
                 */
                { ErrorMsg.STRAY_OTHERWISE_ERR, "<xsl:otherwise> can only be used within <xsl:choose>." },

                /*
                 * Note to translators:  "<xsl:when>" and "<xsl:choose>" are keywords
                 * and should not be translated.  This message describes a syntax error
                 * in the stylesheet.
                 */
                { ErrorMsg.STRAY_WHEN_ERR, "<xsl:when> can only be used within <xsl:choose>." },

                /*
                 * Note to translators:  "<xsl:when>", "<xsl:otherwise>" and
                 * "<xsl:choose>" are keywords and should not be translated.  This
                 * message describes a syntax error in the stylesheet.
                 */
                { ErrorMsg.WHEN_ELEMENT_ERR, "Only <xsl:when> and <xsl:otherwise> elements allowed in <xsl:choose>." },

                /*
                 * Note to translators:  "<xsl:attribute-set>" and "name" are keywords
                 * that should not be translated.
                 */
                { ErrorMsg.UNNAMED_ATTRIBSET_ERR, "<xsl:attribute-set> is missing the 'name' attribute." },

                /*
                 * Note to translators:  An element in the stylesheet contained an
                 * element of a type that it was not permitted to contain.
                 */
                { ErrorMsg.ILLEGAL_CHILD_ERR, "Illegal child element." },

                /*
                 * Note to translators:  The stylesheet tried to create an element with
                 * a name that was not a valid XML name.  The substitution text contains
                 * the name.
                 */
                { ErrorMsg.ILLEGAL_ELEM_NAME_ERR, "You cannot call an element ''{0}''" },

                /*
                 * Note to translators:  The stylesheet tried to create an attribute
                 * with a name that was not a valid XML name.  The substitution text
                 * contains the name.
                 */
                { ErrorMsg.ILLEGAL_ATTR_NAME_ERR, "You cannot call an attribute ''{0}''" },

                /*
                 * Note to translators:  The children of the outermost element of a
                 * stylesheet are referred to as top-level elements.  No text should
                 * occur within that outermost element unless it is within a top-level
                 * element.  This message indicates that that constraint was violated.
                 * "<xsl:stylesheet>" is a keyword that should not be translated.
                 */
                { ErrorMsg.ILLEGAL_TEXT_NODE_ERR, "Text data outside of top-level <xsl:stylesheet> element." },

                /*
                 * Note to translators:  JAXP is an acronym for the Java API for XML
                 * Processing.  This message indicates that the XML parser provided to
                 * XSLTC to process the XML input document had a configuration problem.
                 */
                { ErrorMsg.SAX_PARSER_CONFIG_ERR, "JAXP parser not configured correctly" },

                /*
                 * Note to translators:  The substitution text names the internal error
                 * encountered.
                 */
                { ErrorMsg.INTERNAL_ERR, "Unrecoverable XSLTC-internal error: ''{0}''" },

                /*
                 * Note to translators:  The stylesheet contained an element that was
                 * not recognized as part of the XSL syntax.  The substitution text
                 * gives the element name.
                 */
                { ErrorMsg.UNSUPPORTED_XSL_ERR, "Unsupported XSL element ''{0}''." },

                /*
                 * Note to translators:  The stylesheet referred to an extension to the
                 * XSL syntax and indicated that it was defined by XSLTC, but XSTLC does
                 * not recognized the particular extension named.  The substitution text
                 * gives the extension name.
                 */
                { ErrorMsg.UNSUPPORTED_EXT_ERR, "Unrecognised XSLTC extension ''{0}''." },

                /*
                 * Note to translators:  The XML document given to XSLTC as a stylesheet
                 * was not, in fact, a stylesheet.  XSLTC is able to detect that in this
                 * case because the outermost element in the stylesheet has to be
                 * declared with respect to the XSL namespace URI, but no declaration
                 * for that namespace was seen.
                 */
                { ErrorMsg.MISSING_XSLT_URI_ERR, "The input document is not a stylesheet (the XSL namespace is not " + "declared in the root element)." },

                /*
                 * Note to translators:  XSLTC could not find the stylesheet document
                 * with the name specified by the substitution text.
                 */
                { ErrorMsg.MISSING_XSLT_TARGET_ERR, "Could not find stylesheet target ''{0}''." },

                /*
                 * Note to translators:  access to the stylesheet target is denied
                 */
                { ErrorMsg.ACCESSING_XSLT_TARGET_ERR, "Could not read stylesheet target ''{0}'', because ''{1}'' access is not allowed due to restriction set by the accessExternalStylesheet property." },

                /*
                 * Note to translators:  This message represents an internal error in
                 * condition in XSLTC.  The substitution text is the class name in XSLTC
                 * that is missing some functionality.
                 */
                { ErrorMsg.NOT_IMPLEMENTED_ERR, "Not implemented: ''{0}''." },

                /*
                 * Note to translators:  The XML document given to XSLTC as a stylesheet
                 * was not, in fact, a stylesheet.
                 */
                { ErrorMsg.NOT_STYLESHEET_ERR, "The input document does not contain an XSL stylesheet." },

                /*
                 * Note to translators:  The element named in the substitution text was
                 * encountered in the stylesheet but is not recognized.
                 */
                { ErrorMsg.ELEMENT_PARSE_ERR, "Could not parse element ''{0}''" },

                /*
                 * Note to translators:  "use", "<key>", "node", "node-set", "string"
                 * and "number" are keywords in this context and should not be
                 * translated.  This message indicates that the value of the "use"
                 * attribute was not one of the permitted values.
                 */
                { ErrorMsg.KEY_USE_ATTR_ERR, "The use attribute of <key> must be node, node-set, string or number." },

                /*
                 * Note to translators:  An XML document can specify the version of the
                 * XML specification to which it adheres.  This message indicates that
                 * the version specified for the output document was not valid.
                 */
                { ErrorMsg.OUTPUT_VERSION_ERR, "Output XML document version should be 1.0" },

                /*
                 * Note to translators:  The operator in a comparison operation was
                 * not recognized.
                 */
                { ErrorMsg.ILLEGAL_RELAT_OP_ERR, "Unknown operator for relational expression" },

                /*
                 * Note to translators:  An attribute set defines as a set of XML
                 * attributes that can be added to an element in the output XML document
                 * as a group.  This message is reported if the name specified was not
                 * used to declare an attribute set.  The substitution text is the name
                 * that is in error.
                 */
                { ErrorMsg.ATTRIBSET_UNDEF_ERR, "Attempting to use non-existing attribute set ''{0}''." },

                /*
                 * Note to translators:  The term "attribute value template" is a term
                 * defined by XSLT which describes the value of an attribute that is
                 * determined by an XPath expression.  The message indicates that the
                 * expression was syntactically incorrect; the substitution text
                 * contains the expression that was in error.
                 */
                { ErrorMsg.ATTR_VAL_TEMPLATE_ERR, "Cannot parse attribute value template ''{0}''." },

                /*
                 * Note to translators:  ???
                 */
                { ErrorMsg.UNKNOWN_SIG_TYPE_ERR, "Unknown data-type in signature for class ''{0}''." },

                /*
                 * Note to translators:  The substitution text refers to data types.
                 * The message is displayed if a value in a particular context needs to
                 * be converted to type {1}, but that's not possible for a value of
                 * type {0}.
                 */
                { ErrorMsg.DATA_CONVERSION_ERR, "Cannot convert data-type ''{0}'' to ''{1}''." },

                /*
                 * Note to translators:  "Templates" is a Java class name that should
                 * not be translated.
                 */
                { ErrorMsg.NO_TRANSLET_CLASS_ERR, "This Templates does not contain a valid translet class definition." },

                /*
                 * Note to translators:  "Templates" is a Java class name that should
                 * not be translated.
                 */
                { ErrorMsg.NO_MAIN_TRANSLET_ERR, "This Templates does not contain a class with the name ''{0}''." },

                /*
                 * Note to translators:  The substitution text is the name of a class.
                 */
                { ErrorMsg.TRANSLET_CLASS_ERR, "Could not load the translet class ''{0}''." },

                { ErrorMsg.TRANSLET_OBJECT_ERR, "Translet class loaded, but unable to create translet instance." },

                /*
                 * Note to translators:  "ErrorListener" is a Java interface name that
                 * should not be translated.  The message indicates that the user tried
                 * to set an ErrorListener object on object of the class named in the
                 * substitution text with "null" Java value.
                 */
                { ErrorMsg.ERROR_LISTENER_NULL_ERR, "Attempting to set ErrorListener for ''{0}'' to null" },

                /*
                 * Note to translators:  StreamSource, SAXSource and DOMSource are Java
                 * interface names that should not be translated.
                 */
                { ErrorMsg.JAXP_UNKNOWN_SOURCE_ERR, "Only StreamSource, SAXSource and DOMSource are supported by XSLTC" },

                /*
                 * Note to translators:  "Source" is a Java class name that should not
                 * be translated.  The substitution text is the name of Java method.
                 */
                { ErrorMsg.JAXP_NO_SOURCE_ERR, "Source object passed to ''{0}'' has no contents." },

                /*
                 * Note to translators:  The message indicates that XSLTC failed to
                 * compile the stylesheet into a translet (class file).
                 */
                { ErrorMsg.JAXP_COMPILE_ERR, "Could not compile stylesheet" },

                /*
                 * Note to translators:  "TransformerFactory" is a class name.  In this
                 * context, an attribute is a property or setting of the
                 * TransformerFactory object.  The substitution text is the name of the
                 * unrecognised attribute.  The method used to retrieve the attribute is
                 * "getAttribute", so it's not clear whether it would be best to
                 * translate the term "attribute".
                 */
                { ErrorMsg.JAXP_INVALID_ATTR_ERR, "TransformerFactory does not recognise attribute ''{0}''." },

                /*
                 * Note to translators:  "setResult()" and "startDocument()" are Java
                 * method names that should not be translated.
                 */
                { ErrorMsg.JAXP_SET_RESULT_ERR, "setResult() must be called prior to startDocument()." },

                /*
                 * Note to translators:  "Transformer" is a Java interface name that
                 * should not be translated.  A Transformer object should contained a
                 * reference to a translet object in order to be used for
                 * transformations; this message is produced if that requirement is not
                 * met.
                 */
                { ErrorMsg.JAXP_NO_TRANSLET_ERR, "The Transformer has no encapsulated translet object." },

                /*
                 * Note to translators:  The XML document that results from a
                 * transformation needs to be sent to an output handler object; this
                 * message is produced if that requirement is not met.
                 */
                { ErrorMsg.JAXP_NO_HANDLER_ERR, "No defined output handler for transformation result." },

                /*
                 * Note to translators:  "Result" is a Java interface name in this
                 * context.  The substitution text is a method name.
                 */
                { ErrorMsg.JAXP_NO_RESULT_ERR, "Result object passed to ''{0}'' is invalid." },

                /*
                 * Note to translators:  "Transformer" is a Java interface name.  The
                 * user's program attempted to access an unrecognized property with the
                 * name specified in the substitution text.  The method used to retrieve
                 * the property is "getOutputProperty", so it's not clear whether it
                 * would be best to translate the term "property".
                 */
                { ErrorMsg.JAXP_UNKNOWN_PROP_ERR, "Attempting to access invalid Transformer property ''{0}''." },

                /*
                 * Note to translators:  SAX2DOM is the name of a Java class that should
                 * not be translated.  This is an adapter in the sense that it takes a
                 * DOM object and converts it to something that uses the SAX API.
                 */
                { ErrorMsg.SAX2DOM_ADAPTER_ERR, "Could not create SAX2DOM adapter: ''{0}''." },

                /*
                 * Note to translators:  "XSLTCSource.build()" is a Java method name.
                 * "systemId" is an XML term that is short for "system identification".
                 */
                { ErrorMsg.XSLTC_SOURCE_ERR, "XSLTCSource.build() called without systemId being set." },

                { ErrorMsg.ER_RESULT_NULL, "Result should not be null" },

                /*
                 * Note to translators:  This message indicates that the value argument
                 * of setParameter must be a valid Java Object.
                 */
                { ErrorMsg.JAXP_INVALID_SET_PARAM_VALUE, "The value of param {0} must be a valid Java Object" },

                { ErrorMsg.COMPILE_STDIN_ERR, "The -i option must be used with the -o option." },

                /*
                 * Note to translators:  This message contains usage information for a
                 * means of invoking XSLTC from the command-line.  The message is
                 * formatted for presentation in English.  The strings <output>,
                 * <directory>, etc. indicate user-specified argument values, and can
                 * be translated - the argument <package> refers to a Java package, so
                 * it should be handled in the same way the term is handled for JDK
                 * documentation.
                 */
                { ErrorMsg.COMPILE_USAGE_STR, "SYNOPSIS\n" + "   java com.sun.org.apache.xalan.internal.xsltc.cmdline.Compile [-o <output>]\n" + "      [-d <directory>] [-j <jarfile>] [-p <package>]\n" + "      [-n] [-x] [-u] [-v] [-h] { <stylesheet> | -i }\n\n" + "OPTIONS\n" + "   -o <output>    assigns the name <output> to the generated\n" + "                  translet.  By default the translet name is\n" + "                  derived from the <stylesheet> name.  This option\n" + "                  is ignored if compiling multiple stylesheets.\n" + "   -d <directory> specifies a destination directory for translet\n" + "   -j <jarfile>   packages translet classes into a jar file of the\n" + "                  name specified as <jarfile>\n" + "   -p <package>   specifies a package name prefix for all generated\n" + "                  translet classes.\n" + "   -n             enables template inlining (default behavior better\n" + "                  on average).\n" + "   -x             turns on additional debugging message output\n" + "   -u             interprets <stylesheet> arguments as URLs\n" + "   -i             forces compiler to read stylesheet from stdin\n" + "   -v             prints the version of the compiler\n" + "   -h             prints this usage statement\n" },

                /*
                 * Note to translators:  This message contains usage information for a
                 * means of invoking XSLTC from the command-line.  The message is
                 * formatted for presentation in English.  The strings <jarfile>,
                 * <document>, etc. indicate user-specified argument values, and can
                 * be translated - the argument <class> refers to a Java class, so it
                 * should be handled in the same way the term is handled for JDK
                 * documentation.
                 */
                { ErrorMsg.TRANSFORM_USAGE_STR, "SYNOPSIS \n" + "   java com.sun.org.apache.xalan.internal.xsltc.cmdline.Transform [-j <jarfile>]\n" + "      [-x] [-n <iterations>] {-u <document_url> | <document>}\n" + "      <class> [<param1>=<value1> ...]\n\n" + "   uses the translet <class> to transform an XML document \n" + "   specified as <document>. The translet <class> is either in\n" + "   the user's CLASSPATH or in the optionally specified <jarfile>.\n" + "OPTIONS\n" + "   -j <jarfile>    specifies a jarfile from which to load translet\n" + "   -x              turns on additional debugging message output\n" + "   -n <iterations> runs the transformation <iterations> times and\n" + "                   displays profiling information\n" + "   -u <document_url> specifies XML input document as a URL\n" },

                /*
                 * Note to translators:  "<xsl:sort>", "<xsl:for-each>" and
                 * "<xsl:apply-templates>" are keywords that should not be translated.
                 * The message indicates that an xsl:sort element must be a child of
                 * one of the other kinds of elements mentioned.
                 */
                { ErrorMsg.STRAY_SORT_ERR, "<xsl:sort> can only be used within <xsl:for-each> or <xsl:apply-templates>." },

                /*
                 * Note to translators:  The message indicates that the encoding
                 * requested for the output document was on that requires support that
                 * is not available from the Java Virtual Machine being used to execute
                 * the program.
                 */
                { ErrorMsg.UNSUPPORTED_ENCODING, "Output encoding ''{0}'' is not supported on this JVM." },

                /*
                 * Note to translators:  The message indicates that the XPath expression
                 * named in the substitution text was not well formed syntactically.
                 */
                { ErrorMsg.SYNTAX_ERR, "Syntax error in ''{0}''." },

                /*
                 * Note to translators:  The substitution text is the name of a Java
                 * class.  The term "constructor" here is the Java term.  The message is
                 * displayed if XSLTC could not find a constructor for the specified
                 * class.
                 */
                { ErrorMsg.CONSTRUCTOR_NOT_FOUND, "Cannot find external constructor ''{0}''." },

                /*
                 * Note to translators:  "static" is the Java keyword.  The substitution
                 * text is the name of a function.  The first argument of that function
                 * is not of the required type.
                 */
                { ErrorMsg.NO_JAVA_FUNCT_THIS_REF, "The first argument to the non-static Java function ''{0}'' is not a " + "valid object reference." },

                /*
                 * Note to translators:  An XPath expression was not of the type
                 * required in a particular context.  The substitution text is the
                 * expression that was in error.
                 */
                { ErrorMsg.TYPE_CHECK_ERR, "Error checking type of the expression ''{0}''." },

                /*
                 * Note to translators:  An XPath expression was not of the type
                 * required in a particular context.  However, the location of the
                 * problematic expression is unknown.
                 */
                { ErrorMsg.TYPE_CHECK_UNK_LOC_ERR, "Error checking type of an expression at an unknown location." },

                /*
                 * Note to translators:  The substitution text is the name of a command-
                 * line option that was not recognized.
                 */
                { ErrorMsg.ILLEGAL_CMDLINE_OPTION_ERR, "The command-line option ''{0}'' is not valid." },

                /*
                 * Note to translators:  The substitution text is the name of a command-
                 * line option.
                 */
                { ErrorMsg.CMDLINE_OPT_MISSING_ARG_ERR, "The command-line option ''{0}'' is missing a required argument." },

                /*
                 * Note to translators:  This message is used to indicate the severity
                 * of another message.  The substitution text contains two error
                 * messages.  The spacing before the second substitution text indents
                 * it the same amount as the first in English.
                 */
                { ErrorMsg.WARNING_PLUS_WRAPPED_MSG, "WARNING:  ''{0}''\n       :{1}" },

                /*
                 * Note to translators:  This message is used to indicate the severity
                 * of another message.  The substitution text is an error message.
                 */
                { ErrorMsg.WARNING_MSG, "WARNING:  ''{0}''" },

                /*
                 * Note to translators:  This message is used to indicate the severity
                 * of another message.  The substitution text contains two error
                 * messages.  The spacing before the second substitution text indents
                 * it the same amount as the first in English.
                 */
                { ErrorMsg.FATAL_ERR_PLUS_WRAPPED_MSG, "FATAL ERROR:  ''{0}''\n           :{1}" },

                /*
                 * Note to translators:  This message is used to indicate the severity
                 * of another message.  The substitution text is an error message.
                 */
                { ErrorMsg.FATAL_ERR_MSG, "FATAL ERROR:  ''{0}''" },

                /*
                 * Note to translators:  This message is used to indicate the severity
                 * of another message.  The substitution text contains two error
                 * messages.  The spacing before the second substitution text indents
                 * it the same amount as the first in English.
                 */
                { ErrorMsg.ERROR_PLUS_WRAPPED_MSG, "ERROR:  ''{0}''\n     :{1}" },

                /*
                 * Note to translators:  This message is used to indicate the severity
                 * of another message.  The substitution text is an error message.
                 */
                { ErrorMsg.ERROR_MSG, "ERROR:  ''{0}''" },

                /*
                 * Note to translators:  The substitution text is the name of a class.
                 */
                { ErrorMsg.TRANSFORM_WITH_TRANSLET_STR, "Transform using translet ''{0}'' " },

                /*
                 * Note to translators:  The first substitution is the name of a class,
                 * while the second substitution is the name of a jar file.
                 */
                { ErrorMsg.TRANSFORM_WITH_JAR_STR, "Transform using translet ''{0}'' from jar file ''{1}''" },

                /*
                 * Note to translators:  "TransformerFactory" is the name of a Java
                 * interface and must not be translated.  The substitution text is
                 * the name of the class that could not be instantiated.
                 */
                { ErrorMsg.COULD_NOT_CREATE_TRANS_FACT, "Could not create an instance of the TransformerFactory class ''{0}''." },

                /*
                 * Note to translators:  This message is produced when the user
                 * specified a name for the translet class that contains characters
                 * that are not permitted in a Java class name.  The substitution
                 * text "{0}" specifies the name the user requested, while "{1}"
                 * specifies the name the processor used instead.
                 */
                { ErrorMsg.TRANSLET_NAME_JAVA_CONFLICT, "The name ''{0}'' could not be used as the name of the translet " + "class because it contains characters that are not permitted in the " + "name of Java class.  The name ''{1}'' was used instead." },

                /*
                 * Note to translators:  The following message is used as a header.
                 * All the error messages are collected together and displayed beneath
                 * this message.
                 */
                { ErrorMsg.COMPILER_ERROR_KEY, "Compiler errors:" },

                /*
                 * Note to translators:  The following message is used as a header.
                 * All the warning messages are collected together and displayed
                 * beneath this message.
                 */
                { ErrorMsg.COMPILER_WARNING_KEY, "Compiler warnings:" },

                /*
                 * Note to translators:  The following message is used as a header.
                 * All the error messages that are produced when the stylesheet is
                 * applied to an input document are collected together and displayed
                 * beneath this message.  A 'translet' is the compiled form of a
                 * stylesheet (see above).
                 */
                { ErrorMsg.RUNTIME_ERROR_KEY, "Translet errors:" },

                /*
                 * Note to translators:  An attribute whose value is constrained to
                 * be a "QName" or a list of "QNames" had a value that was incorrect.
                 * 'QName' is an XML syntactic term that must not be translated.  The
                 * substitution text contains the actual value of the attribute.
                 */
                { ErrorMsg.INVALID_QNAME_ERR, "An attribute whose value must be a QName or whitespace-separated list of QNames had the value ''{0}''" },

                /*
                 * Note to translators:  An attribute whose value is required to
                 * be an "NCName".
                 * 'NCName' is an XML syntactic term that must not be translated.  The
                 * substitution text contains the actual value of the attribute.
                 */
                { ErrorMsg.INVALID_NCNAME_ERR, "An attribute whose value must be an NCName had the value ''{0}''" },

                /*
                 * Note to translators:  An attribute with an incorrect value was
                 * encountered.  The permitted value is one of the literal values
                 * "xml", "html" or "text"; it is also permitted to have the form of
                 * a QName that is not also an NCName.  The terms "method",
                 * "xsl:output", "xml", "html" and "text" are keywords that must not
                 * be translated.  The term "qname-but-not-ncname" is an XML syntactic
                 * term.  The substitution text contains the actual value of the
                 * attribute.
                 */
                { ErrorMsg.INVALID_METHOD_IN_OUTPUT, "The method attribute of an <xsl:output> element had the value ''{0}''.  The value must be one of ''xml'', ''html'', ''text'', or qname-but-not-ncname" },

                { ErrorMsg.JAXP_GET_FEATURE_NULL_NAME, "The feature name cannot be null in TransformerFactory.getFeature(String name)." },

                { ErrorMsg.JAXP_SET_FEATURE_NULL_NAME, "The feature name cannot be null in TransformerFactory.setFeature(String name, boolean value)." },

                { ErrorMsg.JAXP_UNSUPPORTED_FEATURE, "Cannot set the feature ''{0}'' on this TransformerFactory." },

                { ErrorMsg.JAXP_SECUREPROCESSING_FEATURE, "FEATURE_SECURE_PROCESSING: Cannot set the feature to false when security manager is present." },

                /*
                 * Note to translators:  This message describes an internal error in the
                 * processor.  The term "byte code" is a Java technical term for the
                 * executable code in a Java method, and "try-catch-finally block"
                 * refers to the Java keywords with those names.  "Outlined" is a
                 * technical term internal to XSLTC and should not be translated.
                 */
                { ErrorMsg.OUTLINE_ERR_TRY_CATCH, "Internal XSLTC error:  the generated byte code contains a " + "try-catch-finally block and cannot be outlined." },

                /*
                 * Note to translators:  This message describes an internal error in the
                 * processor.  The terms "OutlineableChunkStart" and
                 * "OutlineableChunkEnd" are the names of classes internal to XSLTC and
                 * should not be translated.  The message indicates that for every
                 * "start" there must be a corresponding "end", and vice versa, and
                 * that if one of a pair of "start" and "end" appears between another
                 * pair of corresponding "start" and "end", then the other half of the
                 * pair must also be between that same enclosing pair.
                 */
                { ErrorMsg.OUTLINE_ERR_UNBALANCED_MARKERS, "Internal XSLTC error:  OutlineableChunkStart and " + "OutlineableChunkEnd markers must be balanced and properly nested." },

                /*
                 * Note to translators:  This message describes an internal error in the
                 * processor.  The term "byte code" is a Java technical term for the
                 * executable code in a Java method.  The "method" that is being
                 * referred to is a Java method in a translet that XSLTC is generating
                 * in processing a stylesheet.  The "instruction" that is being
                 * referred to is one of the instrutions in the Java byte code in that
                 * method.  "Outlined" is a technical term internal to XSLTC and
                 * should not be translated.
                 */
                { ErrorMsg.OUTLINE_ERR_DELETED_TARGET, "Internal XSLTC error:  an instruction that was part of a block of " + "byte code that was outlined is still referred to in the original " + "method." },

                /*
                 * Note to translators:  This message describes an internal error in the
                 * processor.  The "method" that is being referred to is a Java method
                 * in a translet that XSLTC is generating.
                 *
                 */
                { ErrorMsg.OUTLINE_ERR_METHOD_TOO_BIG, "Internal XSLTC error:  a method in the translet exceeds the Java " + "Virtual Machine limitation on the length of a method of 64 " + "kilobytes.  This is usually caused by templates in a stylesheet " + "that are very large.  Try restructuring your stylesheet to use " + "smaller templates." },

                { ErrorMsg.DESERIALIZE_TRANSLET_ERR, "When Java security is enabled, " + "support for deserializing TemplatesImpl is disabled." + "This can be overridden by setting the jdk.xml.enableTemplatesImplDeserialization" + " system property to true." }

        };

    }
}
